/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Services;

import Services.ArchivoService.ArchivoService;
import Services.ArchivoService.IArchivoService;
import Services.GrupoService.GrupoService;
import Services.GrupoService.IGrupoService;
import Services.TipoArchivoService.ITipoArchivoService;
import Services.TipoArchivoService.TipoArchivoService;
import Services.UsuarioGrupoService.IUsuarioGrupoService;
import Services.UsuarioGrupoService.UsuarioGrupoService;
import Services.UsuarioService.IUsuarioService;
import Services.UsuarioService.UsuarioService;
import exeptions.GeneralException;

/**
 *
 * @author ivanpianetti
 */
public class AppService implements IAppService {

    private static IAppService appService;
    private IUsuarioService usuarioService;
    private IArchivoService archivoService;
    private ITipoArchivoService tipoArchivoService;
    private IGrupoService grupoService;
    private IUsuarioGrupoService usuarioGrupoService;

    public static IAppService getInstance() {
        if (!(appService instanceof AppService)) {
            appService = new AppService();
        }
        return appService;
    }

    /**
     * Todos los servicios disponibles de base de datos
     */
    private AppService() {
        usuarioService = UsuarioService.getInstance();
        archivoService = ArchivoService.getInstance();
        tipoArchivoService = TipoArchivoService.getInstance();
        grupoService = GrupoService.getInstance();
        usuarioGrupoService = UsuarioGrupoService.getInstance();
    }

    public IUsuarioService getUsuarioService() throws GeneralException {
        return usuarioService;
    }

    public IArchivoService getArchivoService() throws GeneralException {
        return archivoService;
    }

    public ITipoArchivoService getTipoArchivoService() throws GeneralException {
        return tipoArchivoService;
    }

    public IGrupoService getGrupoService() throws GeneralException {
        return grupoService;
    }

    public IUsuarioGrupoService getUsuarioGrupoService() {
        return usuarioGrupoService;
    }
}
